package com.coursehub.progress.service;

import java.util.List;
import java.util.Map;

/**
 * 统计分析服务接口
 * 提供与单体系统StatisticsService一致的功能
 */
public interface StatisticsService {
    
    /**
     * 根据学生ID和课程ID获取课程的所有章节ID
     */
    List<String> getChapterIdsByStudentAndCourse(String studentId, String courseId);
    
    /**
     * 根据章节ID获取章节下的所有资料ID
     */
    List<String> getMaterialIdsByChapter(String chapterId);
    
    /**
     * 根据章节ID获取章节实体信息
     */
    Map<String, Object> getChapterById(String chapterId);
    
    /**
     * 根据课程ID获取课程实体信息
     */
    Map<String, Object> getCourseById(String courseId);
    
    /**
     * 根据资料ID获取资料实体信息
     */
    Map<String, Object> getMaterialById(String materialId);
    
    /**
     * 根据课程ID获取课程的所有章节ID
     */
    List<String> getChapterIdsByCourse(String courseId);
    
    /**
     * 根据课程ID和学生ID获取学生的课程学习进度
     */
    Integer getCourseProgress(String courseId, String studentId);
    
    /**
     * 根据章节ID和学生ID获取学生的章节学习进度
     */
    Integer getChapterProgress(String chapterId, String studentId);
    
    /**
     * 根据资料ID和学生ID获取学生的资料学习进度
     */
    Integer getMaterialProgress(String materialId, String studentId);
    
    /**
     * 统计指定班级的课程完成率
     */
    Integer getClassCompletionRate(String classId);
    
    /**
     * 根据练习ID获取练习完成率
     */
    Integer getExerciseCompletionRate(String exerciseId);
    
    /**
     * 验证学生选课状态
     */
    boolean validateStudentEnrollmentStatus(String studentId, String courseId);
}